package com.solution.wx.share.dao.impl;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.solution.common.dao.impl.BaseDaoImpl;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;
import com.solution.wx.share.dao.ShareProductStatisticsDao;
import com.solution.wx.share.entity.ShareProductStatisticsEntity;

/**
 * 分享商品销售统计数据dao实现
 * @author xkl
 * @date 2018年6月8日 下午1:57:06
 */
@Repository
public class ShareProductStatisticsDaoImpl extends BaseDaoImpl<ShareProductStatisticsEntity> implements ShareProductStatisticsDao {

	/**
	 * 查询分享商品统计信息是否存在
	 * @param shareProductId
	 * @return
	 * @author xkl
	 * @date 2018年6月8日 下午1:43:49
	 */
	@Override
	public int isExistsProductStatistics(Long shareProductId) {
		return getSessionTemplate().selectOne(getStatement("isExistsProductStatistics"), shareProductId);
	}

	/**
	 * 批量保存每日分享商品销售统计信息
	 * @param productStatisticsList
	 * @return
	 * @author xkl
	 * @date 2018年6月8日 下午1:44:42
	 */
	@Override
	public int batchInsertDailyStatistics(List<ShareProductStatisticsEntity> productStatisticsList) {
		return getSessionTemplate().insert(getStatement("batchInsertDailyStatistics"), productStatisticsList);
	}

	/**
	 * 批量更新分享商品销售数据总计
	 * @param productStatisticsList
	 * @return
	 * @author xkl
	 * @date 2018年6月8日 下午1:46:13
	 */
	@Override
	public int batchUpdate(List<ShareProductStatisticsEntity> productStatisticsList) {
		return getSessionTemplate().update(getStatement("batchUpdate"), productStatisticsList);
	}

	/**
	 * 根据条件查询每日数据
	 * @param pageParam
	 * @param paramMap
	 * @return
	 * @author xkl
	 * @date 2018年6月21日 下午3:29:58
	 */
	@Override
	public PageBean listDailyPage(PageParam pageParam, Map<String, Object> paramMap) {
		return super.listPage(pageParam, paramMap, "listDailyPage", "countDailyPage");
	}

	/**
	 * 查询以时间为key的每日分享数据
	 * @param paramMap
	 * @return
	 * @author xkl
	 * @date 2018年6月22日 上午11:11:43
	 */
	@Override
	public Map<String, Object> queryDailyData(Map<String, Object> paramMap) {
		return getSessionTemplate().selectMap(getStatement("queryDailyData"), paramMap, "mapKey");
	}

	/**
	 * 统计日期区间的分享销售数据
	 * @param paramMap
	 * @return
	 * @author xkl
	 * @date 2018年6月22日 下午3:58:29
	 */
	@Override
	public ShareProductStatisticsEntity getDailyStatisBy(Map<String, Object> paramMap) {
		return getSessionTemplate().selectOne(getStatement("getDailyStatisBy"), paramMap);
	}

}
